package com.excerise.datatype;

/**
 * 自动转换细节
 *
 * @author Way on 2021/7/26
 */
public class AutoConvertDetail {
    public static void main(String[] args) {
        // 细节1.有多种类型的数据混合运算时，系统首先自动将所有数据转换成容量最大的那种数据类型，再进行计算
        int n1 = 10;

        // n1 + 1.1系统已经转成了double，所以报错:java: 不兼容的类型: 从double转换到float可能会有损失
        // Java数据类型字段转为默认为从低到高而且是不可逆的，所以报错
        //float d1 = n1 + 1.1;
        float d1 = n1 + 1.1F;

        // 细节2.当我们把精度大的数据类型赋值给精度小的数据类型时，就会报错，反之就会自动类型转换
        //int n2 = 1.1;

        // 细节3.byte short 和char之间不会相互自动转换
        // 当把具体数赋值给byte时，系统会先判断该数是否在byte范围内，如果是就可以
        // -128-127
        byte b1 = 10;
        int n2 = 1;
        // 如果是变量赋值，系统会先判断类型
        //byte b2 = n2;
        // 原因byte不能自动转成char
        //char c1 = b1;

        // 细节4：byte、short、char他们三者之间可以计算，在计算时首先转换为int类型
        byte b2 = 1;
        short s1 = 1;
        // 错误 因为 b2 + s1 -> int
        //short s2 = b2 + s1;
    }
}
